#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "LinkStack.h"
#include "Operate.h"

int main() {
    char* str = "8+(3-1)*5";
    char* p = str;

    LinkStack* stack = Init_LinkStack();

    // 从头到尾扫描整个字符串
    while(*p != '\0') {
        if(Is_Number(*p)) {
            Number_Operatr(p);
        }
        
        if(Is_Left(*p)) {
            Left_Operate(stack, p);
        }

        // 右括号
        if(Is_Right(*p)) {
            Right_Operate(stack);
        }

        // 如果是运算符
        if(Is_Operator(*p)) {
            Operator_Operate(stack, p);
        }
        
        p++;
    }
    
    // 最后，如果栈区还有数据，则直接输出即可
    MyChar* mychar = NULL;
    while(GetSize_LinkStack(stack) > 0) {
        mychar = (MyChar*)Top_LinkStack(stack);
        printf("%c", *(mychar->p));

        Pop_LinkStack(stack);
        free(mychar);
    }
    
    printf("\n");

    Destory_LinkStack(stack);
    return 0;
}

